package cn.com.yiqi.wsc.dao.item;

import cn.com.artemis.framework.base.commons.persistence.CrudDao;
import cn.com.yiqi.wsc.dao.item.criteria.ItemCriteria;
import cn.com.yiqi.wsc.dao.order.criteria.OrderCriteria;
import cn.com.yiqi.wsc.entity.item.Item;
import cn.com.yiqi.wsc.entity.item.ItemDTO;
import cn.com.yiqi.wsc.entity.item.ItemPicture;
import cn.com.yiqi.wsc.entity.item.ItemPropertyDTO;
import cn.com.yiqi.wsc.entity.order.OutPutOrderItemDTO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * @author 何刚
 * @ClassName: ${class}
 * @Description: TODO
 * @date 2017/3/8
 */
@Repository
public interface AdminItemDao extends CrudDao<Item> {


    /**
     * 列表查询
     *
     * @param itemCriteria
     * @return
     */
    List<ItemDTO> pageList(ItemCriteria itemCriteria);

    /**
     * 批量插入itemPic
     *
     * @param itemPictures
     * @return
     */
    Integer batchInsertItemPic(@Param("pictures") List<ItemPicture> itemPictures);

    /**
     * @param itemProperties
     * @return
     */
    Integer batchInsertItemProperty(@Param("properties") List<ItemPropertyDTO> itemProperties);


    /**
     * 根据商品Id删除图片
     *
     * @param itemId
     * @return
     */
    Integer deleteItemPicByItemId(@Param("itemId") Integer itemId);

    /**
     * 根据商品Id删除属性
     *
     * @param itemId
     * @return
     */
    Integer deleteItemPropertyByItemId(@Param("itemId") Integer itemId);


    /**
     * 根据商品Id获取对应的属性详情
     *
     * @param itemId
     * @return
     */
    List<ItemPropertyDTO> getPropertyByItemId(@Param("itemId") Integer itemId);


    /**
     * 根据itemId 获取对应的图片列表详情
     *
     * @param itemId
     * @return
     */
    List<ItemPicture> getPictureByItemId(@Param("itemId") Integer itemId);


    /**
     * 根据ItemId获取详情
     *
     * @param itemId
     * @return
     */
    ItemDTO getDetailByItemId(@Param("itemId") Integer itemId);


    /**
     * 获取商品状态
     *
     * @param itemId
     * @return
     */
    Integer getStatusByItemId(@Param("itemId") Integer itemId);

    /**
     * 查询主订单商品
     *
     * @param orderCriteria
     * @return
     */
    List<OutPutOrderItemDTO> outPutOrderItemMain(OrderCriteria orderCriteria);
    
    /**
     * 查询子商品
     *
     * @param orderCriteria
     * @return
     */
    List<OutPutOrderItemDTO> outPutOrderItem(OrderCriteria orderCriteria);

}
